// axios 是一个基于promise 的http库

import axios from 'axios';
// 引入element 提示。
import {Message} from 'element-ui'

// 引入的模块和下边定义的变量，不能是同一个
// 1，axios 实例化  axios.create ，里边可以配置baseUrl，timeout 过期时间，还有headers 请求头
const request = axios.create({
  baseURL: 'http://114.115.140.175:3000', // 请求接口
  timeout: 6000,
})

// 2，axiois 请求拦截器
request.interceptors.request.use((config)=> {
  // 判断浏览器缓存当中是否存在 userInfo，如果存在，那就在判断里边是不是存在token
  if(localStorage.getItem("userInfo") && JSON.parse(localStorage.getItem("userInfo")).token) {
    config.headers["Authorization"] = JSON.parse(localStorage.getItem("userInfo")).token;
  }
  // 数据序列化。qs node模块。可以进行数据转化格式
  return config;
},(error)=> {
  console.log(error,17)
  // 对请求错误做些什么
  return Promise.reject(error);
})

// 3，响应拦截器
request.interceptors.response.use((response)=> {
  // 对响应数据做点什么
  console.log(response.data,29)
  // 如果响应不是200那么根据常规判断，后端一般返回哪些错误码 500.9999
  if(response.data.code == 500) {
    Message({
      type: 'error',
      message: response.data.messgae
    })
  }
  if(response.data.code == 504) {
    Message({
      type: 'error',
      message: response.data.messgae
    })
  }
  if(response.data.code == 9999) {
    Message({
      type: 'error',
      message: response.data.messgae
    })
  }
  // switch (key) {
  //   case value:
      
  //     break;
  
  //   default:
  //     break;
  // }
  return response;
},(error)=> {
  console.log(error)
  // 响应错误
  return Promise.reject(error);
})

export default request;